<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let that = null  // 全局变量
        function Star(name, age) {
            this.name = name
            this.age = age
            console.log(this) // ? 
            that = this // that把this的指向/状态 保存起来了 
        }
        // 这里，我们声明了一个全局变量that，在调用new的时候，保存this的状态， 调用结束后，
        // 如果that还是指向的构造函数创建的实例，说明我们的结论没问题

        let that2 = null
        Star.prototype.sing = function () {
            console.log('唱歌')
            console.log(this)
            that2 = this
        }
        // 1. 构造函数里面的this指向的是实例对象
        const jk = new Star('jack', 18)
        jk.sing()
        console.log(that2)
        // 2. 原型方法中的this指向的还是实例对象
    </script>
</body>

</html>